;s7.asm
assume ds:data, es:table, cs:code 

data segment  
    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'  
    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'  
    db '1993','1994','1995' ;以上是表示21年的21个字符串

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514  
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000  ;以上是表示21年 公司总收入的21个dword型数据

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226  
    dw 11542,14430,15257,17800;以上是表示21公司雇员人数的21个Word型数据。

data ends  
table segment  
    db 21 dup ('year summ ne ?? ')  
table ends

code segment
start:
    ;初始化两个数据段，准备读取数据
    mov ax,data
    mov ds,ax     ;初始化data数据段
    
    mov ax,table
    mov es,ax     ;初始化table 数据段

    mov bx,0      ;累积计数器
    mov si,0      ;累积计数器
    mov cx,21     ;循环次数
    mov di,0      ;累积计数器

s:
    ; 年份
    mov ax,[bx]   
    mov es:[si],ax;写入年份数据前两位
    mov ax,[bx+2]   
    mov es:[si+2],ax;写入年份数据后两位

    ;空格
    mov al,20H
    mov es:[si+4],al
    
    ; 收入
    mov ax,[bx+84]    ;收入的第一个字节
    mov es:[si+5],ax
    mov ax,[bx+84+2]  ;收入的第二个字节
    mov es:[si+5+2],ax

     ;空格
    mov al,20H
    mov es:[si+9],al

    ; 雇员
    mov ax,[di+168]    
    mov es:[si+10],ax
    
    ;空格
    mov al,20H
    mov es:[si+12],al

    ; 人均
    mov ax,[bx+84]   ;低16位
    mov dx,[bx+86]   ;高16位

    mov bp,[di+168]
    div bp                 
    mov es:[si+13],ax     ;将商的结果（ax）写入table段中

    ;空格
    mov al,20H
    mov es:[si+15],al


    add bx,4        ; 根据年份进行递增，遍历data
    add di,2        ;  
    add si,16       ; 遍历table  查看 -d ds:0 22f
    loop s    

    mov ax,4c00H
    int 21H

code ends
end start